#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <string.h>

void Print(int* a, int n);

//冒泡排序
void BubbleSort(int* a, int n);

//插入排序
void InsertSort(int* a, int n);

// 希尔排序
void ShellSort(int* a, int n);

//选择排序
void OldSelectSort(int* a, int n);

//优化选择排序
void OptimizeSelectSort(int* a, int n);

//堆排序
void HeapSort(int* a, int n);

//快排
void QuickSort(int* a, int left, int right);//left为起始下标，right为终止下标

//非递归快排
void QuickSortNonRByStack(int* a, int left, int right);

//借助队列实现非递归快排
void QuickSortNonRByQueue(int* a, int left, int right);

//归并排序——递归
void MergeSort(int* a, int n);

//归并排序——非递归
void MergeSortNonR(int* a, int n);

//计数排序
void CountSort(int* a, int n);